# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2020/12/17 19:57
# @Author  : darknight
# @File    : spider.py
# @Software: PyCharm
import os
from requests import Session
from fake_useragent import UserAgent

BASE_DIR = os.path.dirname(__file__)


class BaseSpider(object):
    def __init__(self):
        self.ua = UserAgent(use_cache_server=False,
                            verify_ssl=False,
                            path=os.path.join(BASE_DIR, 'user_agent/user-agents.json'))
        self.session = Session()
        self.session.headers = {"User-Agent": self.ua.random}

    def header_update(self, *args, **kwargs):
        if isinstance(args[0], dict):
            self.session.headers.update(args[0])
        self.session.headers.update(kwargs)

    def return_res(self, res):
        if not hasattr(self, 'NAME'):
            raise ValueError("请取一个名字 'NAME=xxx'")
        return getattr(self, 'NAME'), res

    def get_recommend_songs_list(self):
        raise NotImplementedError("请重写获取推荐歌单方法 'get_recommend_songs_list'")

    def get_recommend_songs(self):
        raise NotImplementedError("请重写获取推荐歌曲方法 'get_recommend_songs'")

    def get_songs_list_by_category(self, category_id):
        raise NotImplementedError("请重写获取分类歌单方法 'get_songs_list_by_category'")

    def get_songs_list_detail(self, list_id):
        raise NotImplementedError("请重写获取歌单详情方法 'get_songs_list_detail'")

    def get_song_detail(self, song_mid):
        raise NotImplementedError("请重写歌曲详情方法 'get_song_detail'")

    def get_song_play_url(self, song_mid):
        raise NotImplementedError("请重写获取歌曲播放地址方法 'get_song_play_url'")

    def get_song_lyric(self, song_id):
        raise NotImplementedError("请重写获取歌词方法 'get_song_lyric'")

    def get_mv_play_url(self, vid):
        raise NotImplementedError("请重写获取MV地址方法 'get_mv_play_url'")

    def get_top_list(self, top_id):
        raise NotImplementedError("请重写获取排行榜方法 'get_top_list'")

    def get_search_song(self, kw):
        raise NotImplementedError("请重写搜索方法 'get_search_song'")
